unicode UTF8到Java中的EBCDIC 1 年,4 月 Questions & Answers 29318 我们的要求是向大型机发送EBCDIC文本。我们有一些汉字,因此UTF8格式。 那么,有没有办法将UTF-8字符转换为EBCDIC 谢谢, 拉吉莫汉
# 1 楼答案 您始终可以使用IBM Java工具箱(JTOpen),特别是jt400中的com.ibm.as400.access.AS400Text类。罐子 内容如下: int codePageNumber = 420; String codePage = "CP420"; String sourceUtfText = "أحمد يوسف صالح"; AS400Text converter = new AS400Text(sourceUtfText.length(), codePageNumber); byte[] bytesData = converter.toBytes(sourceUtfText); String resultedEbcdicText = new String(bytesData, codePage); 我使用了代码页420及其相应的编码java表示CP420,此代码页用于阿拉伯语文本,因此,您应该为中文文本选择合适的代码页
# 2 楼答案 EBCDIC有许多8位代码页。其中许多都受到VM的支持。看看Charset.availableCharsets().keySet(),EBCDIC页面名为IBM...(正如Charset.forName("IBM500").aliases()所示,有类似cp500的别名表示IBM500) 有两个问题: 如果EBCDIC的不同代码页中包含字符,这将没有帮助 我不确定这些字符集是否在windows之外的任何vm中可用李> 首先,请看一下this approach。第二,在所需的目标运行时上进行一次尝试;-)
# 3 楼答案 假设您的目标系统是IBM大型机或中端系统,它完全支持其JVM中内置的所有EBCDIC编码,即名为CPxxxx的编码,对应于IBM CCSID(CP代表代码页)。您需要在主机端进行翻译,因为客户端没有必要的编码支持 由于Unicode是DBCS或更大的,并且支持每一个已知字符,因此您很可能会针对多个EBCDIC编码;因此,您可能会以某种方式配置这些编码。尝试仅使用您的客户机Unicode(UTF-8、UTF-16等),在数据到达主机和/或离开主机系统时进行转换 除了需要在主机端进行翻译外,其机制与任何Java翻译相同;e、 g.新字符串(字节、编码)和字符串。getBytes(编码),以及各种NIO和writer类。这真的没有什么神奇之处——它与在ISO 8859-x和Unicode或任何其他SBC(或有限的DBC)之间进行转换没有什么不同 例如: byte[] ebcdta="Hello World".getBytes("CP037"); // get bytes for EBCDIC codepage 37 您可以找到有关IBM's documentation website的更多信息
# 4 楼答案 对于中端AS/400(现在的IBMi)来说,最好的选择是使用IBMJavaToolkit(jt400.jar),它可以透明地完成所有这些事情(可能稍微暗示一下) 请注意,在Java内部,字符是16位的值,而不是UTF-8(这是一种编码)
# 1 楼答案
您始终可以使用IBM Java工具箱(JTOpen),特别是jt400中的
com.ibm.as400.access.AS400Text
类。罐子内容如下:
我使用了代码页420及其相应的编码java表示CP420,此代码页用于阿拉伯语文本,因此,您应该为中文文本选择合适的代码页
# 2 楼答案
EBCDIC有许多8位代码页。其中许多都受到VM的支持。看看
Charset.availableCharsets().keySet()
,EBCDIC页面名为IBM...
(正如Charset.forName("IBM500").aliases()
所示,有类似cp500
的别名表示IBM500
)有两个问题:
首先,请看一下this approach。第二,在所需的目标运行时上进行一次尝试;-)
# 3 楼答案
假设您的目标系统是IBM大型机或中端系统,它完全支持其JVM中内置的所有EBCDIC编码,即名为CPxxxx的编码,对应于IBM CCSID(CP代表代码页)。您需要在主机端进行翻译,因为客户端没有必要的编码支持
由于Unicode是DBCS或更大的,并且支持每一个已知字符,因此您很可能会针对多个EBCDIC编码;因此,您可能会以某种方式配置这些编码。尝试仅使用您的客户机Unicode(UTF-8、UTF-16等),在数据到达主机和/或离开主机系统时进行转换
除了需要在主机端进行翻译外,其机制与任何Java翻译相同;e、 g.新字符串(字节、编码)和字符串。getBytes(编码),以及各种NIO和writer类。这真的没有什么神奇之处——它与在ISO 8859-x和Unicode或任何其他SBC(或有限的DBC)之间进行转换没有什么不同
例如:
您可以找到有关IBM's documentation website的更多信息
# 4 楼答案
对于中端AS/400(现在的IBMi)来说,最好的选择是使用IBMJavaToolkit(jt400.jar),它可以透明地完成所有这些事情(可能稍微暗示一下)
请注意,在Java内部,字符是16位的值,而不是UTF-8(这是一种编码)